package April.three.in.demo1;

import Aextends.Develop;

import java.util.ArrayList;
import java.util.Iterator;

/*
定义三个数组 并调用他们的一个成员方法
？通配符 迭代器it.next 方法取出来的是 Object类型 调用work方法
    ? extends aa ：设置上限 则传入的数据类型必须是 父类（aa） 和父类的子类
    ？super bb：设置下限   则传入的数据类型必须是bb 或者bb的父类

 */
public class GennericDemo {
    public static void main(String[] args) {
        ArrayList<JavaEE> java = new ArrayList<JavaEE>();
        ArrayList<Android> an= new ArrayList<Android>();
        java.add(new JavaEE("安康","java001"));
        an.add(new Android("小康","android113"));
        function_1(java);

    }

    public static void function_1(ArrayList<? extends Employee> a){
        Iterator<? extends Employee> in = a.iterator();
        while(in.hasNext()){
//            做一下强制转换，因为已经限制了传入的参数必须时Empoyee类的子类，所以不用担心
//            在强制转换时发生安全性问题。
            Employee ee = in.next();
            ee.work();
        }
    }
}
